// 导入控制类
const {
    Controller
} = require('egg');

// 创建自定义控制器
class Cart extends Controller {
    // 添加商品
    async create(ctx) {
        try {
            let result;
            // 查看要添加的商品是否已经在购物车中
            const isExist = await ctx.service.cart.checkCart(ctx.request.body.iid, ctx.request.body.cartId);
            if (isExist) {
                // 商品存在，修改商品count数据
                result = await ctx.service.cart.updateCount(ctx.request.body.iid, ctx.request.body.cartId);
            } else {
                // 商品不存在，添加商品数据
                // 添加商品进购物车
               result  = await ctx.service.cart.add(ctx.request.body);
               
            }
            if (result) {
                ctx.body = {
                    code: 200,
                    msg: '商品加入成功'
                }
            } else {
                ctx.body = {
                    code: 400,
                    msg: '商品加入失败'
                }
            }

        } catch (e) {
            console.log(e);
            ctx.body = {
                code: 500,
                msg: '服务器异常'
            }
        }
    }

    //查询商品
    async show(ctx){
        try{
            let res = await ctx.service.cart.getCart(ctx.params.id,ctx.query.buy)
            if(res.length != 0 ){
                ctx.body = {
                    code:200,
                    data:res,
                    msg:'查询成功'
                }
            }else{
                ctx.body = {
                    code:201,
                    data:res,
                    msg:'购物车中还没有商品哦,快去添加吧'
                }
            }
        }catch(e){
            ctx.body = {
                code:500,
                msg:'服务器异常'
            }
        }
    }

    // 修改商品状态(下单)
    async update(ctx){
        try{
            let res = await ctx.service.cart.changeState(ctx.params.id,ctx.request.body.orderList);
            if(res){
                ctx.body = {
                    code:200,
                    msg:'下单成功'
                }
            }else{
                ctx.body = {
                    code:400,
                    msg:'订单状态异常,请联系管理员'
                }
            }
        }catch(e){
            console.log(e)
            ctx.body = {
                code:500,
                msg:'服务器异常'
            }
        }
    }

    // 删除商品
    async destroy(ctx){
        try{
            // 获取将需要删除的参数列表
            const res = await ctx.service.cart.deleteGoods(ctx.params.id,ctx.request.body.removeList);
            if(res){
                // 删除商品成功
                ctx.body = {
                    code:200,
                    msg:'删除成功'
                }
            }else{
                ctx.body = {
                    code:400,
                    msg:'删除失败'
                }
            }
        }catch(e){
            ctx.status = 500;
            ctx.body = {
                code:500,
                msg:'服务器异常'
            }
        }
    }
}

// 导出自定义控制器
module.exports = Cart;